Skip to main content
Version: 8.6.10.4

ProductExchMappingV3

V8 Message Definiton

EXCHANGE-ASSIGNED IDENTIFIERS - one row per (instrument, venue). The ephemeral, hot half of what was one ProductMapping table. | THIS RECORD (exchange) | ProductMapping (registry/vendor) lifecycle | EPHEMERAL - intraday to weekly | PERMANENT identity residency | HOT, resident in every routing | reference data | and ingest process | writers | PER-EXCHANGE FEED HANDLERS | vendor loaders (EDI, GLEIF, OpenFIGI) volume | 10^4 - 10^5, churning daily | one ISIN per instrument The writer axis is the one that forces it rather than merely favours it - the same reason SpreadExchID exists as rows instead of a repeater. A table written by per-venue handlers and by vendor loaders together has two purge horizons and two hot/cold profiles in one resident set. THERE IS NO extKeyType HERE, AND THAT IS THE POINT. For an exchange-assigned identifier the TYPE AND THE AUTHORITY ARE THE SAME FACT - 'CBOE's id for this thing' - so the venue IS the type. mic is key material and no separate type field is needed. That collapses the old venue-scoped-versus-global question rather than answering it.

METADATA​

AttributeValue
Topic9100-product-def-core
MLink TokenEquityDefinition
ProductSRReference
accessTypeSELECT
MLink EndpointMLink-Live

Table Definition​

FieldTypeKeyDefault ValueComment
instKey_atenum - AssetTypePRI'None'as much of the key as instKeyType says is meaningful
instKey_tsenum - TickerSrcPRI'None'as much of the key as instKeyType says is meaningful
instKey_tkVARCHAR(12)PRI''as much of the key as instKeyType says is meaningful
instKey_yrSMALLINT UNSIGNEDPRI0as much of the key as instKeyType says is meaningful
instKey_mnTINYINT UNSIGNEDPRI0as much of the key as instKeyType says is meaningful
instKey_dyTINYINT UNSIGNEDPRI0as much of the key as instKeyType says is meaningful
instKey_xxDOUBLEPRI0as much of the key as instKeyType says is meaningful
instKey_cpenum - CallPutPRI'Call'as much of the key as instKeyType says is meaningful
instKeyTypeenum - SpdrKeyTypePRI'None'THE RUNG Stock ticker only Future expiry Option full key
tickerClassenum - TickerClassPRI'None'THE ROLE of the ticker portion Ticker CCode Root
micVARCHAR(4)PRI''ISO 10383 the venue that assigned the id and the ids TYPE
exchIDVARCHAR(30)SEC''the venues own identifier for this instrument
validFromDATE'1900-01-01'exchange ids are REASSIGNED so a mapping is a window
validToDATE'1900-01-01'last date this mapping holds empty means still current
pendingDeleteenum - YesNo'None'Yes queued for removal stop resolving against this row
v3Sourceenum - V3Source'None'Bridge projected from a legacy record Loader written natively None reads as Loader
timestampDATETIME(6)'1900-01-01 00:00:00.000000'when this row was last written
exchSymbolVARCHAR(30)SEC''the venues text symbol for this instrument empty when the venue assigns none

PRIMARY KEY DEFINITION (Unique)​

FieldSequence
instKey_tk1
instKey_yr2
instKey_mn3
instKey_dy4
instKey_xx5
instKey_cp6
instKey_at7
instKey_ts8
instKeyType9
tickerClass10
mic11

SECONDARY INDEX (ExchIDIndex) (Not Unique)​

FieldSequence
exchID1

SECONDARY INDEX (ExchSymbolIndex) (Not Unique)​

FieldSequence
exchSymbol1

SELECT TABLE EXAMPLE QUERY​

SELECT *
FROM `SRReference`.`MsgProductExchMappingV3`
WHERE
/* Replace with a ENUM('None','EQT','IDX','BND','CUR','COM','FUT','SYN','WAR','FLX','MUT','SPD','MM','MF','COIN','TOKEN','ANY','RATE','CRDT','GCR','SWAP','ENT','MBS','SET','LOAN') */
`instKey_at` = 'NONE'
AND
/* Replace with a ENUM('None','SR','NMS','CME','ICE','CFE','CBOT','NYMEX','COMEX','RUT','CIDX','ARCA','NYSE','OTC','NSDQ','MFQS','MIAX','DJI','CUSIP','ISIN','BXE','SCE','ANY','CXE','DXE','NXAM','NXBR','NXLS','NXML','NXOS','NXP','EUREX','CEDX','ICEFEC','ICEFEF','CEQT','TSX','TMX','CRCY','CMDY','DTI','SOVN','SR_US','SR_EU','SR_AP','SR_UK','USD','EUR','GBP','CHF','JPY','CAD','AUD','HKD','KRW','INR','SGD','TWD','CNY','CNH','BRL','MXN','ZAR','SEK','NOK','DKK','PLN','ILS','TRY','NZD','THB','MYR','IDR','PHP','CZK','HUF','SAR','AED','CLP','COP') */
`instKey_ts` = 'NONE'
AND
/* Replace with a VARCHAR(12) */
`instKey_tk` = 'Example_instKey_tk'
AND
/* Replace with a SMALLINT UNSIGNED */
`instKey_yr` = 123
AND
/* Replace with a TINYINT UNSIGNED */
`instKey_mn` = 1
AND
/* Replace with a TINYINT UNSIGNED */
`instKey_dy` = 1
AND
/* Replace with a DOUBLE */
`instKey_xx` = 4.56
AND
/* Replace with a ENUM('Call','Put','Pair') */
`instKey_cp` = 'CALL'
AND
/* Replace with a ENUM('None','Stock','Future','Option','MLeg') */
`instKeyType` = 'NONE'
AND
/* Replace with a ENUM('None','Ticker','CCode','Root') */
`tickerClass` = 'NONE'
AND
/* Replace with a VARCHAR(4) */
`mic` = 'Example_mic';

Doc Columns Query​

SELECT * FROM SRReference.doccolumns WHERE TABLE_NAME='ProductExchMappingV3' ORDER BY ordinal_position ASC;